package com.xiaoshuidi.cloud.module.member.service.activities;

import com.xiaoshuidi.cloud.framework.common.pojo.PageResult;
import com.xiaoshuidi.cloud.module.member.controller.admin.activities.vo.ActivitiesStatisticsVO;
import com.xiaoshuidi.cloud.module.member.controller.admin.activities.vo.EnrollItemVO;
import com.xiaoshuidi.cloud.module.member.controller.app.activities.vo.EnrollListVO;
import com.xiaoshuidi.cloud.module.member.controller.app.activities.vo.EnrollStatusPageVO;
import com.xiaoshuidi.cloud.module.member.controller.app.activities.vo.EnrollVO;
import com.xiaoshuidi.cloud.module.member.mq.message.VerifyCodeMessage;

import java.util.List;

public interface MemberActivitiesEnrollService {
    /**
     * 租客端报名
     * @param vo
     * @return
     */
    Boolean enroll(EnrollVO vo);

    /**
     * 是否可以报名
     * @param activityId
     * @return
     */
    Boolean enrollOrNot(Long activityId);

    /**
     * 分页查询核销状态的列表
     * @param page
     * @return
     */
    PageResult<EnrollListVO> getStatusPage(EnrollStatusPageVO page);

    /**
     * pc端分页查询活动报名情况
     * @param page
     * @return
     */
    PageResult<EnrollListVO> getPage(EnrollStatusPageVO page);

    /**
     * 核销二维码
     *
     * @param id
     * @param enrollItemVO
     * @return
     */
    Boolean writeOff(Long id,  EnrollItemVO enrollItemVO);

    /**
     * 活动报名的统计信息
     * @param activityId
     * @return
     */
    List<ActivitiesStatisticsVO> statistics(Long activityId);

    /**
     * 执行消息
     * @param verifyCodeMessage
     */
    void doVerifyCodeMessage(VerifyCodeMessage verifyCodeMessage);

    /**
     * 导出活动报名详情
     * @param form
     * @return
     */
    List<EnrollListVO> exportEnrollList(EnrollStatusPageVO form);

    void updateUserId(Long oldUserId, Long userId);
}
